﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using AccesoBD;
using Entidades;

namespace PresentacionEscritorio
{
    public partial class frmConsultarPlanAfiliacion : Form
    {
       
        public frmConsultarPlanAfiliacion()
        {
            InitializeComponent();
        }

        public frmConsultarPlanAfiliacion(Boolean actualizar) : this()
        {
            cargarGrilla();
        }

        private void frmConsultarPlanAfiliacion_Load(object sender, EventArgs e)
        {
            cargarGrilla();
            chkTodos.Checked = false;
            chkTodos.Visible = false;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            Boolean seEncontro = false;
            if (txtNombrePlan.Text == "" && dtpFechaDesde.Checked == false && dtpFechaHasta.Checked == false)
            {
                MessageBox.Show("Debe completar algún campo de busqueda", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                SqlConnection connPlan = DB.Conectar();
                SqlDataReader drPlan = null;
                if (txtNombrePlan.Text != "" && dtpFechaDesde.Checked == false && dtpFechaHasta.Checked == false)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", txtNombrePlan.Text));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (txtNombrePlan.Text != "" && dtpFechaDesde.Checked == true && dtpFechaHasta.Checked == false)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND fechaVigenciaDesde = @fechaVigenciaDesde AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", txtNombrePlan.Text));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", dtpFechaDesde.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (txtNombrePlan.Text != "" && dtpFechaDesde.Checked == false && dtpFechaHasta.Checked == true)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", txtNombrePlan.Text));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", dtpFechaHasta.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (txtNombrePlan.Text != "" && dtpFechaDesde.Checked == true && dtpFechaHasta.Checked == true)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND fechaVigenciaDesde = @fechaVigenciaDesde AND fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", txtNombrePlan.Text));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", dtpFechaDesde.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", dtpFechaHasta.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (txtNombrePlan.Text == "" && dtpFechaDesde.Checked == true && dtpFechaHasta.Checked == true)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE fechaVigenciaDesde = @fechaVigenciaDesde AND fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", dtpFechaDesde.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", dtpFechaHasta.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (txtNombrePlan.Text == "" && dtpFechaDesde.Checked == true && dtpFechaHasta.Checked == false)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE fechaVigenciaDesde = @fechaVigenciaDesde AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", dtpFechaDesde.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (txtNombrePlan.Text == "" && dtpFechaDesde.Checked == false && dtpFechaHasta.Checked == true)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", dtpFechaHasta.Value.Date));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }

                while (grdBusquedaPlan.RowCount > 1)
                {
                    grdBusquedaPlan.Rows.Clear();

                }
                while (drPlan.Read())
                {

                    if (drPlan["fechaVigenciaHasta"].ToString() != "")
                    {
                        grdBusquedaPlan.Rows.Add(drPlan["nombre"].ToString(), drPlan["descripcion"].ToString(), drPlan["precioInscripcion"].ToString(), drPlan["precioCuota"].ToString(), Convert.ToDateTime(drPlan["fechaVigenciaDesde"]).ToShortDateString(), Convert.ToDateTime(drPlan["fechaVigenciaHasta"]).ToShortDateString());
                    }
                    else
                    {
                        grdBusquedaPlan.Rows.Add(drPlan["nombre"].ToString(), drPlan["descripcion"].ToString(), drPlan["precioInscripcion"].ToString(), drPlan["precioCuota"].ToString(), Convert.ToDateTime(drPlan["fechaVigenciaDesde"]).ToShortDateString(), drPlan["fechaVigenciaHasta"]);
                    }
                    seEncontro = true;
                }

                if (seEncontro == false)
                {
                    MessageBox.Show("No se encontro el plan", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    limpiar();
                }

            }
        }

        public void cargarGrilla()
        {
            while (grdBusquedaPlan.RowCount > 1)
            {
                grdBusquedaPlan.Rows.Clear();

            }
            if (chkTodos.Checked == false)
            {
                SqlConnection conn = DB.Conectar();
                SqlCommand sqlCommand = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null", conn);
                sqlCommand.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date));
                SqlDataReader dr = sqlCommand.ExecuteReader();
                while (dr.Read())
                {
                    if (dr["fechaVigenciaHasta"].ToString() != "")
                    {
                        grdBusquedaPlan.Rows.Add(dr["nombre"].ToString(), dr["descripcion"].ToString(), dr["precioInscripcion"].ToString(), dr["precioCuota"].ToString(), Convert.ToDateTime(dr["fechaVigenciaDesde"]).ToShortDateString(), Convert.ToDateTime(dr["fechaVigenciaHasta"]).ToShortDateString());
                    }
                    else
                    {
                        grdBusquedaPlan.Rows.Add(dr["nombre"].ToString(), dr["descripcion"].ToString(), dr["precioInscripcion"].ToString(), dr["precioCuota"].ToString(), Convert.ToDateTime(dr["fechaVigenciaDesde"]).ToShortDateString(), dr["fechaVigenciaHasta"]);
                    }
                }
            }

        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (grdBusquedaPlan.SelectedRows.Count > 0)
            {
                Boolean res;
                DialogResult result = MessageBox.Show("Seguro que desea eliminar el registro?", "Aviso", MessageBoxButtons.YesNo);
                if (result == DialogResult.Yes)
                {
                    PlanesAfiliaciones p = new PlanesAfiliaciones();
                    res = p.eliminarPlanAfiliacion(grdBusquedaPlan.CurrentRow.Cells["Nombre"].Value.ToString());
                    if (res)
                    {
                        MessageBox.Show("El plan se dio de baja con exito!", "Aviso", MessageBoxButtons.YesNo);
                    }
                    else
                    {
                        MessageBox.Show("El plan no se dio de baja con exito!", "Aviso", MessageBoxButtons.YesNo);
                    }
                }
                cargarGrilla();
            }
            else
            {
                MessageBox.Show("Debe seleccionar un plan!", "Aviso", MessageBoxButtons.YesNo);
            }

        }

        private void limpiar()
        {
            txtNombrePlan.Text = "";
            dtpFechaDesde.Value = DateTime.Now;
            dtpFechaHasta.Value = DateTime.Now;
            dtpFechaDesde.Checked = false;
            dtpFechaHasta.Checked = false;
            cargarGrilla();
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            limpiar();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Seguro que desea salir?", "Aviso", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
                this.Close();

        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (grdBusquedaPlan.SelectedRows.Count > 0)
            {
                PlanesAfiliaciones p = new PlanesAfiliaciones();
                string nombre = grdBusquedaPlan.CurrentRow.Cells["Nombre"].Value.ToString();
                string descripcion = grdBusquedaPlan.CurrentRow.Cells["Descripcion"].Value.ToString();
                float inscripcion = float.Parse(grdBusquedaPlan.CurrentRow.Cells["PrecioInscripcion"].Value.ToString());
                float cuota = float.Parse(grdBusquedaPlan.CurrentRow.Cells["PrecioCuota"].Value.ToString());
                DateTime fechaDesde = Convert.ToDateTime(grdBusquedaPlan.CurrentRow.Cells["VigenciaDesde"].Value).Date;

                int idBusqueda = p.buscarIdPlan(nombre, descripcion, inscripcion, cuota, fechaDesde);
                frmRegistrarPlanAfiliacion frm = new frmRegistrarPlanAfiliacion(idBusqueda);
                frm.ShowDialog();
                cargarGrilla();

            }
            else
            {
                MessageBox.Show("Debe seleccionar un plan!", "Aviso", MessageBoxButtons.YesNo);
            }

            

        }

        private void chkTodos_CheckedChanged(object sender, EventArgs e)
        {
            cargarGrilla();
        }

        private void btnMostrarDatos_Click(object sender, EventArgs e)
        {
            if (grdBusquedaPlan.SelectedRows.Count > 0)
            {
                PlanesAfiliaciones p = new PlanesAfiliaciones();
                string nombre = grdBusquedaPlan.CurrentRow.Cells["Nombre"].Value.ToString();
                string descripcion = grdBusquedaPlan.CurrentRow.Cells["Descripcion"].Value.ToString();
                float inscripcion = float.Parse(grdBusquedaPlan.CurrentRow.Cells["PrecioInscripcion"].Value.ToString());
                float cuota = float.Parse(grdBusquedaPlan.CurrentRow.Cells["PrecioCuota"].Value.ToString());
                DateTime fechaDesde = Convert.ToDateTime(grdBusquedaPlan.CurrentRow.Cells["VigenciaDesde"].Value).Date;

                int idBusqueda = p.buscarIdPlan(nombre, descripcion, inscripcion, cuota, fechaDesde);
                frmMostrarDatosPlanAfiliacion frm = new frmMostrarDatosPlanAfiliacion(idBusqueda);
                frm.ShowDialog();
            }
            else
            {
                MessageBox.Show("Debe seleccionar un plan!", "Aviso", MessageBoxButtons.YesNo);
            }

        }

    }
}